const app = getApp(),
  // login_token = app.globalData.login_token,
  url = app.globalData.apiUrl,
  classArr = ['学科资料', '图书', '寝室必备', '美妆洗护', '校园代步', '生活用品', '手机3C', '文体', '服装配饰', '其它'],
  classArr2 = ['xuekeziliao', 'tushu', 'qingshibibei', 'meizhuangxihu', 'xiaoyuandaibu', 'shenghuoyongping', 'shouji3c', 'wenti', 'fushichuandai', 'other']

/**
 * 通过分类获取物品列表
 * @param {string} catagory 分类的拼音
 * @param {string} order_by 排序方式 by_price_asc (价格升序) by_price_desc (价格降序) by_post_time (最新发布)
 * @param {number}  page 页数
 * @param {string} key_word (可选参数,搜索的关键词)
 */
function getThing(
  obj = {
    login_token: app.globalData.login_token,
    category: 'all',
    order_by: 'by_post_time', // by_price_asc (价格升序) by_price_desc (价格降序) by_post_time (最新发布)
    page: 1
  }
) {
  // console.log(obj)

  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/thing',
      method: 'get',
      data: obj,
      success(res) {
        // console.log(res.data.data.next_page, res.data.data.list)

        if (res.statusCode == 200 && res.data.data.list) {
          res.data.data.list = To(res.data.data.list)
          //返回数据
          resolve(res.data)
        } else {
          console.log('无物品数据')
          // console.log(res)
          reject(404)
        }
      },
      fail(err) {
        console.error(err)

        reject(err)
      }
    })
  })
}
/**
 * 转换格式
 */
function To(arr) {
  return arr.map(item => {
    // 分类
    classArr2.map((item2, index2) => {
      if (item2 == item.category) {
        item.category_CN = classArr[index2]
        item.category_num = index2 + 1
      }
    })
    // 时间
    item.time = utc2beijing(item.updated_at || item.created_at) //created_at
    // 图片链接
    if (item.images) {
      if (item.images[0].image) {
        item.images_obj = item.images
        item.images = item.images.map(item2 => app.globalData.baseURL + '/' + item2.image)
      } else {
        item.images = item.images.map(item2 => app.globalData.baseURL + '/' + item2)
      }
    }
    // 性别

    if (item.owner && item.owner.gender) {
      item.owner.sex = item.owner.gender
    }

    return item
  })
  function utc2beijing(utc) {
    var date2 = new Date(utc)
    return (
      // date2.getFullYear() +
      // '年' +
      date2.getMonth() + 1 + '月' + date2.getDate() + '日 ' + date2.getHours() + ':' + (Array(2).join(0) + date2.getMinutes()).slice(-2)
    )
  }
}
function utc2beijing(utc) {
  var date2 = new Date(utc)
  return (
    // date2.getFullYear() +
    // '年' +
    date2.getMonth() + 1 + '月' + date2.getDate() + '日 ' + date2.getHours() + ':' + (Array(2).join(0) + date2.getMinutes()).slice(-2)
  )
}
/**
 * 获取banner列表
 * @returns {JSON} json/false
 */
function banner() {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/banner',
      method: 'get',
      data: {
        login_token: app.globalData.login_token
      },
      success(res) {
        // console.log(res)

        resolve(res)
      },
      fail(err) {
        console.error(err)

        reject(err)
      }
    })
  })
}
/**
 * 获取banner下的物品列表（未分页）
 * @param {string} id banner id
 * @returns {JSON} json/false
 */
function banner_thing(id, by = 'by_post_time') {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/banner/' + id + '/things',
      method: 'get',
      data: {
        login_token: app.globalData.login_token,
        order_by: by
      },
      success(res) {
        if (res.statusCode == 200 && res.data.data.list) {
          res.data.data.list = To(res.data.data.list)
          //返回数据
          resolve(res)
        } else {
          console.log('无物品数据')
          // console.log(res)
          reject(404)
        }
      },
      fail(err) {
        console.error(err)
        reject(err)
      }
    })
  })
}

/**
 * 获取他人正在出售的物品
 * @param {number} user_id 用户ID
 */
function getOtherThing(user_id) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/user/' + user_id + '/things',
      method: 'get',
      data: {
        login_token: app.globalData.login_token
      },
      success(res) {
        if (res.statusCode == 200 && res.data.data.list) {
          res.data.data.list = To(res.data.data.list)
          //返回数据
          resolve(res.data)
        } else {
          console.log('无物品数据')
          reject(404)
        }
        // resolve(res)
      },
      fail(err) {
        console.error(err)
        reject(err)
      }
    })
  })
}
/**
 * 获取物品的评论
 * @param {string} id 物品 id
 */
function comments(thing_id) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/thing/' + thing_id + '/comments',
      method: 'get',
      data: {
        login_token: app.globalData.login_token
      },
      success(res) {
        // console.log('arr', res.data.data.comments)
        let arr = res.data.data.comments
        if (arr) {
          arr = arr.map(item => {
            item.time = utc2beijing(item.created_at)
            if (item.sub) {
              item.sub.map(item2 => {
                item2.time = utc2beijing(item2.created_at)
              })
            }
            return item
          })
        }
        if (res.data.err_code == 0) {
          resolve(arr)
        } else {
          reject(404)
        }
      },
      fail(err) {
        console.error(err)
        reject(err)
      }
    })
  })
}
/**
 * 发布一级评论
 * @param {string} id 物品 id
 * @param {string} content 内容
 * @param {string} form_id
 */
function postComments(thing_id, content, formId) {
  console.log({
    login_token: app.globalData.login_token,
    thing_id: thing_id,
    content: content,
    form_id: formId
  })

  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/thing/comment',
      method: 'post',
      data: {
        login_token: app.globalData.login_token,
        thing_id: thing_id,
        content: content,
        form_id: formId
      },
      success(res) {
        resolve(res)
      },
      fail(err) {
        console.error(err)
        reject(err)
      }
    })
  })
}

/**
 * 回复评论
 * @param {number} parent 父评论ID
 * @param {number} to 回复的目标用户ID
 * @param {string} content 回复内容
 * @param {number} thing_id 物品ID
 * @param {string} formId
 */
function subComments(parent, to, content, thing_id, formId) {
  console.log({
    login_token: app.globalData.login_token,
    parent: parent,
    to: to,
    content: content,
    thing_id: thing_id,
    form_id: formId
  })

  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/thing/subComment',
      method: 'post',
      data: {
        login_token: app.globalData.login_token,
        parent: parent,
        to: to,
        content: content,
        thing_id: thing_id,
        form_id: formId
      },
      success(res) {
        resolve(res)
      },
      fail(err) {
        console.error(err)
        reject(err)
      }
    })
  })
}
/**
 * 获取我的闲置
 * @param {string} type 物品状态  on_sale(出售中) saled(已出售) off_sale(下架)
 * @param {number}   page page
 */
function my_thing(
  obj = {
    type: 'on_sale',
    login_token: app.globalData.login_token,
    page: 1
  }
) {
  // console.log(obj)

  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/my/thing',
      method: 'get',
      data: obj,
      success(res) {
        // console.log(res)
        if (res.statusCode == 200 && res.data.data.list) {
          res.data.data.list = To(res.data.data.list)
          //返回数据
          resolve(res.data)
        } else {
          console.log('无物品数据')
          // console.log(res)

          reject(404)
        }
      },
      fail(err) {
        console.error(err)

        reject(err)
      }
    })
  })
}
/**
 * 将物品状态 变为 已出售
 * @param {nuumber} thing_id 物品ID
 */
function setThingStatus(thing_id) {
  console.log(url + '/thing/' + thing_id + '/status', app.globalData.login_token)

  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/thing/' + thing_id + '/status',
      method: 'put',
      data: {
        login_token: app.globalData.login_token
      },
      success(res) {
        if (res.data.err_code == 0) {
          resolve(res.data)
        } else {
          reject(res)
        }
      },
      fail(err) {
        reject(err)
      }
    })
  })
}
/**
 * 删除我的物品
 * @param {number} thing_id 物品id
 */
function deleMyThing(thing_id) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/thing/' + thing_id,
      method: 'delete',
      data: {
        login_token: app.globalData.login_token
      },
      success(res) {
        if (res.data.err_code == 0) {
          resolve(res)
        } else {
          reject(404)
        }
      },
      fail(err) {
        console.error(err)
        reject(err)
      }
    })
  })
}
/**
 * 获取物品详情
 * @param {number} id 物品ID
 */
function getOneThing(id) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url + '/thing/' + id,
      method: 'get',
      data: {
        login_token: app.globalData.login_token
      },
      success(res) {
        if (res.statusCode == 200) {
          res.data.data = To([res.data.data])[0]
          if (res.data.data.topic) {
            res.data.data.topic.image = app.globalData.baseURL + res.data.data.topic.image
          }
          //返回数据
          resolve(res.data)
        } else {
          console.log('无物品数据')
          // console.log(res)
          reject(404)
        }
      },
      fail(err) {
        console.error(err)

        reject(err)
      }
    })
  })
}
module.exports = {
  getThing: getThing,
  comments: comments,
  my_thing: my_thing,
  banner_thing: banner_thing,
  banner: banner,
  deleMyThing: deleMyThing,
  getOtherThing: getOtherThing,
  postComments: postComments,
  subComments: subComments,
  setThingStatus: setThingStatus,
  getOneThing: getOneThing
}
